'Created by: X
'Copyright: Created by: X
'E-Mail: mailto:createdbyx@yahoo.com
'Web: http://www.createdbyx.com/
'Date: August 6, 2003
'=============================================

''' <summary>
''' Used to describe the order of each axis.
''' </summary>
Public Enum AxisOrder
    ''' <summary>
    ''' A standard XYZ ordered axis.
    ''' </summary>
    XYZ = 0
    ''' <summary>
    ''' A XZY ordered axis.
    ''' </summary>
    XZY = 1
    ''' <summary>
    ''' A YXZ ordered axis.
    ''' </summary>
    YXZ = 2
    ''' <summary>
    ''' A ZYX ordered axis.
    ''' </summary>
    ZYX = 3
    ''' <summary>
    ''' A ZXY ordered axis.
    ''' </summary>
    ZXY = 4
    ''' <summary>
    ''' A YZX ordered axis.
    ''' </summary>
    YZX = 5
End Enum

''' <summary>
''' Used by the Camera class to specify the style of projection matrix to use.
''' </summary>
Public Enum CameraType
    ''' <summary>
    ''' Specifies to use a 2D projection matrix.
    ''' </summary>
    Camera2D = 0
    ''' <summary>
    ''' Specifies to use a 3D projection matrix.
    ''' </summary>
    Camera3D = 1
End Enum

''' <summary>
''' Specifies how a animation track will play.
''' </summary>
Public Enum PlayStyle
    ''' <summary>
    ''' Specifies that the track only be played once.
    ''' </summary>
    Once = 0
    ''' <summary>
    ''' Specifies that the track be played over and over again. When the track reaches the end it will restart from the start.
    ''' </summary>
    Looping = 1
End Enum

''' <summary>
'''     Used by cirtian camera methods to determin what parts of a vector to get/set.
''' </summary>
''' <remarks>
'''     The 'SetVector' enum is used by the SetPosition, SetLookAt, and SetOrientation methods of the Camera class.
''' </remarks>
Public Enum SetVector
    ''' <summary>
    '''     Refers to the 'X' co-ordanant of a vector structure.
    ''' </summary>
    X = 1
    ''' <summary>
    '''     Refers to the 'Y' co-ordanant of a vector structure.
    ''' </summary>
    Y = 2
    ''' <summary>
    '''     Refers to the 'Z' co-ordanant of a vector structure.
    ''' </summary>
    Z = 4
End Enum

''' <summary>
''' TextureStage allows for a name based indexing of the d3d texture stage pipe lines.
''' </summary>
Public Enum TextureStage
    ''' <summary>
    ''' Returns an index to the base map texture stage.
    ''' </summary>
    Base = 0
    ''' <summary>
    ''' Returns an index to the bump map texture stage.
    ''' </summary>
    ''' 
    Bump = 1
    ''' <summary>
    ''' Returns an index to the environment map texture stage.
    ''' </summary>
    ''' 
    Environment = 2
    ''' <summary>
    ''' Returns an index to texture stage 0.
    ''' </summary>
    ''' 
    Texture0 = 0
    ''' <summary>
    ''' Returns an index to texture stage 1.
    ''' </summary>
    ''' 
    Texture1 = 1
    ''' <summary>
    ''' Returns an index to texture stage 2.
    ''' </summary>
    ''' 
    Texture2 = 2
    ''' <summary>
    ''' Returns an index to texture stage 3.
    ''' </summary>
    ''' 
    Texture3 = 3
    ''' <summary>
    ''' Returns an index to texture stage 4.
    ''' </summary>
    ''' 
    Texture4 = 4
    ''' <summary>
    ''' Returns an index to texture stage 5.
    ''' </summary>
    ''' 
    Texture5 = 5
    ''' <summary>
    ''' Returns an index to texture stage 6.
    ''' </summary>
    ''' 
    Texture6 = 6
    ''' <summary>
    ''' Returns an index to texture stage 7.
    ''' </summary>
    ''' 
    Texture7 = 7
End Enum

''' <summary>
''' The orientation enum is used by the Camera class.
''' </summary>
Public Enum Orientation
    ''' <summary>
    ''' Defines a XY orientation.
    ''' </summary>
    XY = 0
    ''' <summary>
    ''' Defines a XZ orientation.
    ''' </summary>
    XZ = 1
    ''' <summary>
    ''' Defines a ZY orientation.
    ''' </summary>
    ZY = 2
End Enum

''' <summary>
''' Provides a enumerator for specifying a direction in 3 dimentions.
''' </summary>
Public Enum Direction
    ''' <summary>
    ''' No dimention defined.
    ''' </summary>
    None = 0
    ''' <summary>
    ''' X dimention.
    ''' </summary>
    X = 1
    ''' <summary>
    ''' Y dimention.
    ''' </summary>
    Y = 2
    ''' <summary>
    ''' Z dimention.
    ''' </summary>
    Z = 4
End Enum

''' <summary>
''' Specifies an axis for displacement. This emumerator is used by the Displacement method.
''' </summary>
Public Enum Displacement
    ''' <summary>
    ''' Defines the X axis.
    ''' </summary>
    X = 0
    ''' <summary>
    ''' Defines the Y axis.
    ''' </summary>
    Y = 1
End Enum

''' <summary>
''' Provides enumeration to determine how to build a matrix.
''' </summary>
Public Enum MatrixFunction
    ''' <summary>
    ''' Adds two matrices.
    ''' </summary>
    Add = 1
    ''' <summary>
    ''' Subtracts two matrices.
    ''' </summary>
    Subtract = 2
    ''' <summary>
    ''' Determines the product of two matrices.
    ''' </summary>
    Multiply = 3
    ''' <summary>
    ''' Calculates the inverse of a matrix.
    ''' </summary>
    Invert = 4
    ''' <summary>
    ''' Determines the product of two matrices, followed by a transpose.
    ''' </summary>
    MultiplyTranspose = 5
End Enum